鸭子类型:一种编程中的类型思想——对象的“类型”不看它的继承关系或声明,而看它能做什么(是否具有所需的方法/行为)。常用来概括为:“如果它走起来像鸭子、叫起来像鸭子,那它就是鸭子。”(也常见于 Python 等动态语言;在静态语言中也有类似的“结构化类型”理念。)
If it has a quack() method, we can use it—this is duck typing.
如果它有 quack() 方法,我们就能使用它——这就是鸭子类型。
The function accepts any object that implements read() and close(), relying on duck typing rather than a specific class hierarchy.
该函数接受任何实现了 read() 和 close() 的对象,依赖的是鸭子类型而不是特定的类继承体系。
/ˈdʌk ˌtaɪpɪŋ/
“Duck typing”源自英语俗语 “If it walks like a duck and quacks like a duck, it’s a duck.” 后被借用到计算机领域,用来描述一种以行为契合为核心的用法:只要对象提供需要的接口/方法,就把它当作“那种东西”来用,而不强调名义上的类型声明。